import { env } from "@/api/env.js"
import global from '@/utils/global';
const mapi = {
	/**
	 * 跳转页面
	 * @param {string} url
	 * @param {boolean} needLogin
	 */
	navTo(url : string = '', needLogin : boolean = false) {
		console.log("navigateTo:", url)
		//needLogin 未传递则不验证是否授权登录，页面直接跳转
		let hasLogin = uni.getStorageSync(global.IS_LOGIN) || false;

		console.log('haslogin', hasLogin, needLogin)
		if (!needLogin || hasLogin) {
			uni.navigateTo({
				url
			})
		} else {
			console.log("跳转提示：用户未登录跳转登录页面", global.CENTER_LOGIN_PAGE);
			if (!global.CENTER_LOGIN_PAGE) {
				global.CENTER_LOGIN_PAGE = true; //进入登录页面
				// #ifdef H5
				// wx.miniProgram.navigateTo({ url: '/pages/login/login/login' }) //登录
				// #endif
				// #ifndef H5
				uni.navigateTo({ url: '/pages/login/login/login' })
				// #endif
			}
		}
		// uni.navigateTo({
		// 	url: url
		// })
	},
	/**
	 * toast提示
	 */
	msg(title : string = '', code : any = '', duration = 1500, mask = false, icon : any = 'none') {
		//统一提示方便全局修改
		if (Boolean(title) === false || code == '-1') {
			return;
		}
		uni.showToast({
			title,
			duration,
			mask,
			icon
		});
	},
	/**
	 * 返回上一页携带参数
	 */
	prePage(index : number = 2) {
		let pages = getCurrentPages();
		let prePage = pages[pages.length - (index || 2)];
		// #ifdef H5
		return prePage;
		// #endif
		// console.log('prePage0', prePage);
		return prePage.$vm;
	},
	// 去掉字符串中的空格
	trim(str : string) {
		if (!str) {
			return '';
		}
		return str.replace(/\s*/g, '');
	},
	// 获取h5post参数
	recPost() {

	},
	// 跳转h5链接
	getWebUrl(nurl, obj) {
		let ntik = uni.getStorageSync(global.USER_TKT) || '';
		let jtik = this.strEncode(ntik)
		// console.log('teutlurl',env)
		let npage = env.webs.home + (nurl && nurl != 'undefined' ? nurl : '/pages/index/home/home')
		let param = {
			orgfrom: 'isWebView',
			tiket: jtik || '',
			time: new Date().getTime()
		}
		let nparam = Object.assign(param, (obj || {}))
		return this.objParseUrlAndParam(npage, nparam)
	},
	/**
	 * 开发环境全局打印日志
	 * @param {Object} title
	 */
	log(title) {
		if (process.env.NODE_ENV === 'development' && Boolean(title) === true) {
			console.log(JSON.stringify(title));
		}
	},
	/**
	 * 获取一个随机数
	 * @param {Object} min
	 * @param {Object} max
	 */
	random(min : number, max : number) {
		switch (arguments.length) {
			case 1:
				return parseInt(Math.random() * min + 1, 10);
				break;
			case 2:
				return parseInt(Math.random() * (max - min + 1) + min, 10);
				break;
			default:
				return 0;
				break;
		}
	},
	/*
	 * obj 转 params字符串参数
	 * 例子：{a:1,b:2} => a=1&b=2
	 */
	objParseParam(obj:any) {
		let paramsStr = '';
		if (obj instanceof Array) return paramsStr;
		if (!(obj instanceof Object)) return paramsStr;
		for (let key in obj) {
			paramsStr += `${key}=${obj[key]}&`;
		}
		return paramsStr.substring(0, paramsStr.length - 1);
	},
	/*
	 * obj 转 路由地址带参数
	 * 例子：{a:1,b:2} => /pages/index/index?a=1&b=2
	 */
	objParseUrlAndParam(path, obj) {
		let url = path || '/';
		let paramsStr = '';
		if (obj instanceof Array) return url;
		if (!(obj instanceof Object)) return url;
		paramsStr = this.objParseParam(obj);
		paramsStr && url.indexOf('?') >= 0 ? (url += '&') : paramsStr ? (url += '?') : '';
		url += paramsStr;
		return url;
	},
	/**
	 * 加密字符串
	 */
	strEncode(str : string) {
		const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ258';
		let l = key.length;
		let a = key.split('');
		let s = '',
			b,
			b1,
			b2,
			b3;
		for (let i = 0; i < str.length; i++) {
			b = str.charCodeAt(i);
			b1 = b % l;
			b = (b - b1) / l;
			b2 = b % l;
			b = (b - b2) / l;
			b3 = b % l;
			s += a[b3] + a[b2] + a[b1];
		}
		return s;
	},

	// 添加单位，如果有rpx，%，px等单位结尾或者值为auto，直接返回，否则加上rpx单位结尾
	addUnit(value = 'auto', unit = 'rpx') {
		value = String(value);
		// 用uView内置验证规则中的number判断是否为数值
		return Number(value) ? `${value}${unit}` : value;
	},
	/**
	 * style 对象转字符串
	 * @param {Object} styleObj
	 */
	styleObjToString(styleObj : AnyObject) {
		return Object.keys(styleObj)
			.map((key) => {
				return `${key}:${styleObj[key]};`;
			})
			.join('');
	},
	// 复制内容
	// copy(content: string) {
	//  uni.setClipboardData({
	//    data: content,
	//    success: function () {
	//      this.msg('复制成功');
	//    }
	//  })
	// },

}
export default mapi